#ifdef OSGI_USE_15S_HEADER
#include "../interface/InterfaceDef.h"
#include "osgi-core/osgi-predefined.h"
#else // OSGI_USE_15S_HEADER
#ifndef OSGI_CORE_IManifest_h__
#define OSGI_CORE_IManifest_h__

#ifdef _WINDOWS
#define MATA_RELATIVE_PATH "\\META-INF\\manifest.mf"
#else
#define MATA_RELATIVE_PATH "/META-INF/manifest.mf"
#endif

#define MANIFEST_FILE_SPLIT_CHAR ':'
#define MANIFEST_REQBUNDS_SPLIT_CHAR ","
#define MANIFEST_FUNC_SPLIT_CHAR "%[^;]"
#define MANIFEST_SO_SPLIT_CHAR "%*[^=]=%s"


#include "osgi-predefined.h"

OSGI_NAMESPACE_BEGIN

OSGI_INTERFACE IManifestEnum
{
	virtual ~IManifestEnum() {}

	virtual int OSGI_API Count() = 0;
	virtual IManifest* OSGI_API GetManifest(int index) = 0;
	virtual void OSGI_API Destroy() = 0;
};

OSGI_INTERFACE IManifest
{
	virtual ~IManifest() {}

	virtual int OSGI_API GetManifestVersion(const char** ppVersion) = 0;
	virtual int OSGI_API GetName(const char** ppName) = 0;
	virtual int OSGI_API GetSymbolicName(const char** ppSymbolicName) = 0;
	virtual int OSGI_API GetVersion(const char** ppVersion) = 0;
	virtual int OSGI_API GetVendor(const char** ppVendor) = 0;
	virtual int OSGI_API GetCopyright(const char** ppCopyright) = 0;
	virtual int OSGI_API GetRunLevel(const char** ppRunLevel) = 0;
	virtual int OSGI_API GetRequiredManifest(IManifestEnum** ppEnmuer) = 0;
	virtual int OSGI_API GetLazyStart(bool* pLazyStart) = 0;
};

OSGI_NAMESPACE_END

#endif // OSGI_CORE_IManifest_h__
#endif // OSGI_USE_15S_HEADER
